package com.ksd.common.tool;

import com.ksd.common.config.PlayControlConfig;
import com.ksd.common.core.domain.entity.SysDictType;
import com.ksd.common.utils.file.FileUploadUtils;
import org.json.XML;
import org.slf4j.Logger;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class FileTools {

    public static List<String> filterFilePathsDir(List<String> filePaths) {
        List<String> filteredPaths = new ArrayList<>();

        List<String> dirTempPaths = new ArrayList<>();
        List<String> fileTempPaths = new ArrayList<>();
        //先将文件夹和文件进行分类
        for (String filePath : filePaths) {
            File file = new File(filePath);
            if (file.isDirectory()) {
                // 如果是文件夹，直接添加到过滤后的列表中
                dirTempPaths.add(filePath);
            }else if(file.isFile()){
                // 如果是文件，检查其下的文件是否已经在列表中
                fileTempPaths.add(filePath);
            }
        }
        System.out.println(fileTempPaths.size()+"===================="+dirTempPaths.size()+"==========="+fileTempPaths.size());
        //选中提交的路径列表里只有文件夹  ==>直接读取文件夹下的所有文件
        //选中提交的路径列表里只有文件  ==>读取该列表下的所有文件
        //选中提交的路径列表里有的有文件夹也有文件 ==>以选中的文件夹为准,文件不记
        if (dirTempPaths.size() > 0) {
            return dirTempPaths;
        }else{
            if (fileTempPaths.size() > 0) {
                File file = new File(fileTempPaths.get(0));
                File parentFile = file.getParentFile();
                filteredPaths.add(parentFile.getAbsolutePath());
            }
            return filteredPaths;
        }
    }

    public static final String[] MOVIE_XML_NAME = { "config.xml" };
    public static final String[] SONG_XML_NAME = {"config.xml.done"};
    public static final String[] XML_NAME = { "config.xml", "config.xml.done" };

    public static final String movieDefaultId = "1"; //电影分类为初始数据,不允许被删除
    public static final String songDefaultId = "2"; //歌曲分类为初始数据,不允许被删除
    private static final Logger logger = org.slf4j.LoggerFactory.getLogger(FileTools.class);
    public static int findFilesInSubdirectories(File directory,int count) {
        // 检查目录是否存在且为目录
        if (directory.exists() && directory.isDirectory()) {
            // 获取目录下的所有文件和子目录
            File[] files = directory.listFiles();
            logger.info("获取文件夹下的所有文件:"+files.length);
            for (File file : files) {
                if (file.isFile()) {
                    // 如果是文件，打印文件的绝对路径
                    logger.info("找到文件: " + file.getAbsolutePath());
                    if (FileUploadUtils.isAllowedExtension(file.getName(),XML_NAME)){
                        //将文件夹下的所有文件都复制上传
                        count++;
                    }
//                            if (FileUploadUtils.isAllowedExtension(file.getName(),SONG_XML_NAME)){
//                                //将文件夹下的所有文件都复制上传
//                                count++;
//                            }

                } else if (file.isDirectory()) {
                    // 如果是子目录，递归调用该方法
                    count = findFilesInSubdirectories(file,count);
                }
            }
        } else {
            System.out.println("指定的路径不是一个有效的目录。"+directory.getAbsolutePath());
        }
        return count;
    }

    public static void main(String[] args) {
        String test = "config.xml";
        if (FileUploadUtils.isAllowedExtension(test, XML_NAME)){
            System.out.println("属于");
        }else{
            System.out.println("不属于");
        }
    }
}
